// 349. 两个数组的交集
// 输入：nums1 = [1,2,2,1], nums2 = [2,2]
// 输出：[2] 输出每个元素唯一
// 输入：nums1 = [4,9,5], nums2 = [9,4,9,8,4]
// 输出：[9,4]
// 解释：[4,9] 也是可通过的
// 思路：使用哈希映射 判断是否存在
/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
 var intersection = function(nums1, nums2) {
    if(nums1.length > nums2.length) [nums1,nums2] = [nums2,nums1];
    let hash = new Set(nums1);
    let res = new Set();
    for(let i = 0;i < nums2.length;i++){
        if(hash.has(nums2[i])){
            res.add(nums2[i]);
        }
    }
    return [...res];//注意返回数组

};
// 350. 两个数组的交集 II
// 输入：nums1 = [1,2,2,1], nums2 = [2,2]
// 输出：[2,2] 输出每个元素不唯一
// 思路：使用排序+双指针法
/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
 var intersect = function(nums1, nums2) {
    nums1.sort((a,b)=>a-b);
    nums2.sort((a,b)=>a-b);
    let l=0,r=0,ans=[];
    while(l<nums1.length&&r<nums2.length){
        if(nums1[l]===nums2[r]){
            ans.push(nums2[r]);
            l++;
            r++;
        }
        else{
            nums1[l]<nums2[r]?l++:r++;
        }
    }
    return ans;
};